import globals from "globals";
import pluginReact from "eslint-plugin-react";
import js from "@eslint/js"; // ESLint 内置规则集
import { defineConfig } from "eslint/config";

export default defineConfig([
  // 基础 JavaScript 配置
  {
    files: ["**/*.{js,mjs,cjs,jsx}"],
    languageOptions: {
      globals: {
        ...globals.browser, // 浏览器环境全局变量
        ...globals.node,    // 可选：Node.js 全局变量（如需 SSR）
      },
      ecmaVersion: "latest", // 最新 ECMAScript 特性
      sourceType: "module",  // 默认使用 ESM
      parserOptions: {
        ecmaFeatures: {
          jsx: true,         // 启用 JSX 支持
        },
      },
    },
    rules: {
      ...js.configs.recommended.rules, // ESLint 推荐规则
      "no-console": "warn",            // 自定义规则示例
    },
  },

  // React 插件配置
  {
    files: ["**/*.{jsx,tsx}"],        // 仅针对 JSX 文件
    plugins: {
      react: pluginReact,
    },
    rules: {
      ...pluginReact.configs.recommended.rules,
      "react/jsx-uses-react": "error",     // 防止未使用的 React 导入
      "react/jsx-uses-vars": "error",      // 防止未使用的 JSX 变量
      "react/react-in-jsx-scope": "error", // React 17+ 可关闭此规则
    },
    settings: {
      react: {
        version: "detect", // 自动检测 React 版本
      },
    },
  },

  // 忽略文件配置（替代 .eslintignore）
  {
    ignores: [
      "**/node_modules/**",
      "**/dist/**",
      "**/.next/**",
    ],
  },
]);
